package bitwork;


// 合并两个升序数组

// 错误示范：
/*public class Commingle {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        // 即：nums1的m是指有效数字长度
        // 非递减就是指递增顺序排列

        int num = nums1.length;
        // 第一步交换完成
        for(int i=0; i<m; i++) {
            for(int j=i; j<n; j++) {  // 注意第二次的起始位置！
                if(nums1[i]>nums2[j]) {
                    int tmp = nums1[i];
                    nums1[i]= nums2[j];
                    nums2[j] = tmp;
                }
            }
        }

        // 进行测试
        // 输出nums1,nums2
        for (int x:nums1) {
            System.out.print(x+" ");
        }
        System.out.println();
        for (int x:nums2) {
            System.out.print(x+" ");
        }
        System.out.println();

        // 第二步进行拼接:0-3 1-4 2-5
        for(int i=m; i<num; i++) {
            nums1[i] = nums2[i-m];
        }
        for (int x:nums1) {
            System.out.print(x+" ");
        }
    }

    public static void main(String[] args) {
        Commingle commingle = new Commingle();
        int[] nums1 = {4,5,6,0,0,0};
        int[] nums2 = {1,2,3};
        int m = 3;
        int n = 3;
        commingle.merge(nums1,m,nums2,n);
    }
}*/

import java.util.Arrays;

public class Commingle {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        // 即：nums1的m是指有效数字长度
        // 非递减就是指递增顺序排列

        // 先进行合并，再使用方法进行排序！
        for (int i = m; i < (m+n); i++) {
            nums1[i] = nums2[i-m];
        }
        Arrays.sort(nums1);

        for (int x:nums1) {
            System.out.print(x+" ");
        }
    }

    public static void main(String[] args) {
        Commingle commingle = new Commingle();
        int[] nums1 = {4,5,6,0,0,0};
        int[] nums2 = {1,2,3};
        int m = 3;
        int n = 3;
        commingle.merge(nums1,m,nums2,n);
    }
}
